package com.itheima.service.fallback;

import com.itheima.domain.Product;
import com.itheima.service.ProductService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * @author MI
 * @ClassName ProductServiceFallbackFactory.java
 * @createTime 2021年11月17日 23:11:00
 */
//这是一个容错的工厂类，要求我们要实现一个接口 fallbackFactory<要为哪个接口产生容错类>
@Slf4j
@Component
public class ProductServiceFallbackFactory implements FallbackFactory<ProductService> {

    // Throwable 就是调用过程产生的异常
    @Override
    public ProductService create(Throwable cause) {
        return pid -> {
            log.info("{}",pid);
            log.error("{}", cause);
            log.info("进入容错类");
            Product product = new Product();
            product.setPid(-100);
            product.setPname("远程调用商品微服务出现异常");
            return product;
        };
    }
}
